Jump To:
Technical Q&As
Carbon is a set of APIs that enables C and C++ developers to take advantage of Mac OS X-specific features, including an advanced user interface tool kit, an efficient event-handling mechanism, the Quartz 2D graphics library, and multiprocessing support. In addition, other industry-standard C and C++ APIs are easily available to Carbon developers, providing access to such services as the OpenGL drawing system, the Mach microkernel, and BSD operating-system services. Because Carbon is a collection of C programming interfaces, developers can use virtually any Macintosh C development environment that supports PowerPC to build Carbon applications.

Carbon Resources
A guided introduction and learning path for developers new to Carbon.   Essential information for developers using procedural C.   Descriptions of procedural C programming interface elements.
Document Descriptions
On Off
Display

Sort by
Title
Sort by
Topic
Sorted by
Date
Printer Queue vs. Printer Name (HTML)
QA1407: Explains the difference between a printer queue and a printer name.
Printing 2005-01-27
Core Audio & Xcode - Ensuring the latest Core Audio Headers are installed (HTML)
QA1386: Describes how to ensure you're working with the latest Core Audio Header files with Xcode.
Music & Audio, Tools 2005-01-18
Resolves may return an IPv6 address in Panther (HTML)
QA1298: Explains why you get an IP address of 0.0.0.0 when resolving a Rendezvous service.
Networking 2005-01-10
Sequence Grabber - Determining the capture resolution of an IIDC device (HTML)
QA1403: Discusses how to determine the resolution of a captured image from an IIDC device
QuickTime 2005-01-06
OpenGL Sample Code (HTML)
QA1166: Describes new naming convention for OpenGL sample code
Games, Graphics & Imaging 2004-12-01
My custom item dismisses my Navigation Services dialog (HTML)
QA1381: Gives a workaround for dismissive clicks on items in the custom area of Navigation Services dialogs.
File Management, Human Interface Toolbox, User Experience 2004-11-22
Sending an Email (HTML)
QA1084: Shows how to create an email in the user's prefered email application.
Interapplication Communication, Internet & Web, Networking 2004-11-05
Private HITheme APIs in Mac OS X 10.2 should not be called (HTML)
QA1377: Explains why weak-linked API common runtime check is not good enough for the HITheme APIs.
Human Interface Toolbox 2004-10-27
Sorting Like the Finder (HTML)
QA1159: Shows how to sort strings like the Finder's list view.
File Management, Text & Fonts 2004-10-27
Registering for sleep notifications (HTML)
QA1340: Explains how register for sleep notifcations on Mac OS X.
Resource Management 2004-10-25
Preventing sleep (HTML)
QA1160: Explains how your application can prevent the system from sleeping.
Resource Management 2004-10-22
Enabling the Navigation Services default behavior in its dialogs (HTML)
QA1384: Explains how to enable the default behavior of the Navigation Services dialogs.
File Management, Human Interface Toolbox 2004-10-15
Fixing the Layout Binding of the Tab control User Panes (HTML)
QA1161: Describes the Tab control hierarchy and layouts of its panes and provides a fix to a common problem.
Human Interface Toolbox 2004-10-14
Managing custom drawing code in a compositing world (HTML)
QA1162: Explains why any custom drawing code must be handled by the kEventControlDraw handler of a custom HIView
Human Interface Toolbox 2004-10-14
Clickable Static Text Item (HTML)
QA1380: Explains how to make a static text item respond to clicks
Human Interface Toolbox, User Experience 2004-10-05
SetFontInfoForSelection incorrect prototype (HTML)
QA1375: Describes the incorrect prototyping of the SetFontInfoForSelection API and gives a workaround.
Events & Other Input, Human Interface Toolbox, Text & Fonts, User Experience 2004-10-04
Storing file references in CFPreferences (HTML)
QA1350: Storing file references in CFPreferences
Runtime Architecture 2004-10-01
Adding a movie reference to a movie (HTML)
QA1376: Demonstrates how to add a reference for a movie to another movie
QuickTime 2004-09-16
Movies - Saving movie playback hints (HTML)
QA1366: Explains how to save and load media play hints from Movie files.
QuickTime 2004-09-14
CGBitmapContextCreate Supported Color Spaces (HTML)
QA1037: Lists the color space and alpha info combinations currently supported by CGBitmapContextCreate.
Games, Graphics & Imaging 2004-09-09
Avoiding Pauses When Looping Audio files with QuickTime (HTML)
QA1371: Demonstrates how to avoid pauses when looping audio files with QuickTime
Music & Audio 2004-09-08
Rendezvous enforces the TXT record format in Panther (HTML)
QA1306: Explains how mDNSResponder enforces the proper TXT record format in Panther.
Networking 2004-07-14
Updating the TXT record of a Rendezvous service (HTML)
QA1302: Explains how to update a Rendezvous TXT record while running on either Jaguar or Panther.
Networking 2004-07-14
Getting a Packet Trace (HTML) ()
QA1176: Lists tools available for looking at the network packets on the wire.
Internet & Web, Networking 2004-07-13
Dynamically registering a bundled component (HTML)
QA1083: Describes how to dynamically register a Component which resides in an Application bundle.
Core Foundation, QuickTime 2004-06-07
Discovering all advertised Rendezvous service types (HTML)
QA1337: Explains how to discover all Rendezvous service types being advertised on the local network.
Networking 2004-06-01
Avoiding the -42 error with DiscRecording (HTML)
QA1292: Explains how to workaround the -42 error when using the DiscRecording API.
File Management 2004-05-25
Directories Appear as Volume Aliases (HTML)
QA1351: Discusses how VFS plug-ins should handle device numbers to ensure compatibility with Carbon applications.
File Management 2004-05-25
Rendezvous enforces the service type format in Panther (HTML)
QA1198: Explains why registering a Rendezvous service might fail on Panther.
Networking 2004-03-23
The Rendezvous Name is not the Rendezvous name (HTML) ()
QA1228: Explains why you should use the Computer Name when advertising a Rendezvous service.
Networking 2004-03-05
Why am I drawing directly to the screen? (HTML)
QA1015: Explains why drawing to a window's backbuffer can affect the upper left corner of the screen instead.
Graphics & Imaging 2004-02-19
X11 FAQ (HTML) ()
QA1232: Frequently Asked Questions about using Apple's X Window System (X11) implementation.
Human Interface Toolbox 2003-11-17
Why doesn't my Scrolling Text Box control work in a compositing window? (HTML)
QA1324: Explains why some older controls do not function properly in compositing windows and points to a replacement.
Human Interface Toolbox 2003-11-13
Downloading through a proxy server in Mac OS X (HTML)
QA1296: Explains when downloading through a proxy server will work, and when it will fail.
Networking 2003-10-29
Environment Variables (HTML)
QA1255: Describes how a process gets its environment variables.
Runtime Architecture 2003-10-29
URL Access vs. CFNetwork (HTML)
QA1291: Explains when to choose URL Access or CFNetwork when downloading files from within your application.
Networking 2003-10-29
Why isn't my edit text box in my Navigation dialog's custom area working on 10.3? (HTML)
QA1315: Explains a bug in the Mac OS X 10.3 Navigation Services Custom Area involving the EditText and its work around.
Human Interface Toolbox, User Experience 2003-10-28
Registering a Rendezvous service multiple times (HTML)
QA1311: Explains why registering the same Rendezvous service twice on the same machine doesn't cause a name conflict.
Networking 2003-10-23
Rendezvous TXT record rate limiting in Panther (HTML)
QA1293: Explains how mDNSResponder implements TXT record rate limiting in Panther.
Networking 2003-10-23
Third party VFS can't unmount on Mac OS X 10.3 (HTML)
QA1308: Describes changes in unmounting behavior for VFS plug-ins under Mac OS X 10.3 "Panther."
File Management 2003-10-23
Don't forget to cancel your Rendezvous resolve (HTML)
QA1297: Explains why it's important to cancel a Rendezvous resolve operation.
Networking 2003-10-15
Suppressing the "unexpectedly quit" alert (HTML)
QA1288: Describes how to suppress the "unexpectedly quit" alert.
User Experience 2003-10-10
NSL and how it relates to Rendezvous (HTML)
QA1299: Explains the relationship between NSL and Rendezvous.
Networking 2003-09-18
Rendezvous and wake from sleep (HTML)
QA1290: Explains why applications that use Rendezvous should stay registered and continue browsing on sleep.
Networking 2003-09-18
CFXML to CFPropertyListRef (and back!) (HTML) ()
QA1208: Describes to how save and restore a CFPropertyListRef to and from an XML file.
Data Management 2003-08-29
Non Mac OS X Bundled data-fork based Resources (HTML) ()
QA1098: Mac OS X Bundled data-fork based Resources
Data Management, Design Guidelines, File Management, Process Management, Resource Management, Runtime Architecture 2003-08-20
Filtering QuickTime media types in Navigation Services (HTML) ()
QA1274: Describes how to filter QuickTime media types in a Navigation Services filter procedure.
Human Interface Toolbox 2003-07-23
The Data Browser GetDataBrowserUserState API (HTML) ()
QA1270: Explains a problematic Data Browser API definition and how to work around it.
Human Interface Toolbox 2003-07-22
CGImageRef contents are immutable (HTML) ()
QA1276: Explains that CGImageRef contents are considered immutable once created.
Graphics & Imaging 2003-07-17
Context Sharing Tips (HTML) ()
QA1248: How to correctly share OpenGL contexts and what the limits on this sharing are.
Games, Graphics & Imaging 2003-06-24
Updating OpenGL Contexts (HTML) ()
QA1209: When and why to update an OpenGL context in response to system and user actions.
Games, Graphics & Imaging 2003-06-19
Empty Memory Objects (HTML) ()
QA1259: Describes how two memory management edge cases are handled by the common Mac OS memory allocators.
Accessibility, Data Management 2003-04-21
Is ColorSync thread safe? (HTML) ()
QA1261: Discusses ColorSync thread-safety issues.
Graphics & Imaging 2003-04-17
Notifying the Finder of changed or newly created files (HTML) ()
QA1260: Recommended approach to notifying the Finder to update its open windows of a file creation or change.
File Management, Human Interface Toolbox, Interapplication Communication 2003-04-15
PPPoE Server for Testing (HTML) ()
QA1252: Describes how to configure Mac OS X as a PPPoE server for testing purposes.
Networking 2003-04-11
Can I have parameters of type typeHIRect instead of type typeQDRectangle in my kEventControlBoundsChanged message handler? (HTML) ()
QA1246: Details the automatic coercions between QuickDraw and Quartz types provided by the Carbon Event Parameter accessors.
Human Interface Toolbox 2003-04-03
Developing for VFS (HTML) ()
QA1242: Describes Apple's position on developing external file systems (VFS plug-ins) for Mac OS X.
File Management 2003-03-26
FSSetCatalogInfo versus UID and GID (HTML) ()
QA1251: Describes why FSSetCatalogInfo does not set the UID and GID of the file, and provides a work around.
File Management 2003-03-26
Internet Connect Speed (HTML) ()
QA1165: Describes how to get the modem connection speed from the System Configuration framework dynamic store.
Core Foundation 2003-03-26
Debugging Graphics with QuartzDebug (HTML) ()
QA1236: Explains how to use QuartzDebug to debug graphics issues.
Graphics & Imaging 2003-02-25
How do I use PMSessionGetGraphicsContext to get a CGContextRef? (HTML) ()
QA1216: Describes how to use PMSessionSetDocumentFormatGeneration and PMSessionGetGraphicsContext to get a CGContextRef for printing.
Graphics & Imaging, Printing 2003-02-25
Quartz 2D Thread Safety (HTML) ()
QA1238: Explains the thread-safety issues for the Quartz 2D API.
Graphics & Imaging, Performance, Printing, Process Management 2003-02-25
Accessing HTTPS Proxy Settings (HTML) ()
QA1234: Describes how to programatically access Secure Web Proxy information.
Networking 2003-02-19
Programmatically causing restart, shutdown and/or logout (HTML) ()
QA1134: Describes how to programmatically cause restart, shutdown, sleep or logout.
Events & Other Input, Process Management, Resource Management 2003-02-10
Text Encodings in VFS (HTML) ()
QA1173: How to handle text encodings correctly when writing a file system (VFS) plug-in for Mac OS X.
File Management 2003-02-10
Converting to Precomposed Unicode (HTML) ()
QA1235: Describes how to convert a string to precomposed Unicode.
Internationalization, Text & Fonts 2003-02-07
File Manager Text Encoding Hints (HTML) ()
QA1223: How to use Text Encoding Hints.
File Management 2003-01-20
Finding Missing OpenGL CFM Entry Points (HTML) ()
QA1225: A resolution to Mac OS X 10.2 OpenGL CFM applications which break under Mac OS X 10.1.
Games, Graphics & Imaging 2002-12-23
Using Clip Region and Buffer Rectangles with OpenGL Carbon (HTML) ()
QA1222: Shows the basics of using buffer rectangles and clip regions with AGL.
Games, Graphics & Imaging 2002-12-19
How do I tell if a particular display is being hardware accelerated by Quartz Extreme? (HTML) ()
QA1218: Describes how to use CGDisplayUsesOpenGLAcceleration to see if a display is accelerated or not.
Games, Graphics & Imaging, Performance 2002-12-04
How can I programmatically determine the DPI of the current video mode? (HTML) ()
QA1217: Describes how to compute the DPI for a given display in a given mode using Core Graphics.
Games, Graphics & Imaging 2002-12-02
GetProcAdress and OpenGL Entry Points (HTML) ()
QA1188: Technique for finding function pointers for OpenGL entry points in Cocoa and Carbon
Games, Graphics & Imaging 2002-11-25
Problems recording CopyBits into a PICT on Mac OS X 10.2 (HTML) ()
QA1189: Identifies a problem with CopyBits and PICT on Mac OS X 10.2 and gives a simple workaround.
Graphics & Imaging, Porting 2002-11-19
Are the root control, the root view, and the content view the same entity? (HTML) ()
QA1214: Details the differences and similitudes between the root control, the root view, and the content view of windows.
Human Interface Toolbox 2002-11-12
CGContext parameter missing in my kEventControlDraw event (HTML) ()
QA1212: Explains in which case your kEventControlDraw handler wouldn't receive a CGContext parameter.
Human Interface Toolbox 2002-11-12
CreateStaticTextControl fails with paramErr (HTML) ()
QA1211: Explains why CreateStaticTextControl fails with a paramErr in compositing windows and gives a work around.
Human Interface Toolbox 2002-11-12
Do I have to call CreateRootControl after creating my window? (HTML) ()
QA1215: Explains when and when not to call CreateRootControl after creating a window.
Human Interface Toolbox 2002-11-12
HIObjectRegisterSubclass returns paramErr (HTML) ()
QA1213: Explains in which case HIObjectRegisterSubclass would return paramErr and gives a work around.
Human Interface Toolbox 2002-11-12
What is the minimal set of Carbon Events I need to override in order to implement a simple custom push button? (HTML) ()
QA1210: Details the minimal set of Carbon Events needed to implement a simple custom push button HIView.
Human Interface Toolbox 2002-11-12
QDSwapPort (HTML) ()
QA1128: Explains when to use QDSwapPort.
Graphics & Imaging, Porting 2002-11-06
Using cmPathBased profile locations on Mac OS X (HTML) ()
QA1203: Shows how to correctly specify cmPath-based profile locations on Mac OS X
Graphics & Imaging 2002-11-06
Quartz 2D Interpolation (HTML) ()
QA1186: Explains how to control Quartz 2D's image interpolation.
Graphics & Imaging, Printing 2002-10-29
QuickDraw Text Anti-Aliasing using Quartz 2D (HTML) ()
QA1193: Describes APIs added to Mac OS X to allow applications to draw QD text using CG anti-aliasing.
Graphics & Imaging, Porting 2002-10-29
URL Access and the Missing Progress Dialog (HTML) ()
Deprecated - QA1140: Explains a known bug in URL Access related to progress dialogs.
Networking 2002-09-23
SCSIAction and IOSCSIUserClient on Mac OS X 10.2 (HTML) ()
QA1201: Describes migrating to a new API for SCSI Parallel devices starting with Mac OS X 10.2.
Printing 2002-09-13
Setting request headers in URL Access (HTML) ()
Deprecated - QA1073: Explains how to work around a bug in URL Access when setting request headers.
Networking 2002-09-10
Preserving embedded ICC profiles when using QuickTime Graphics Importer/Exporters (HTML) ()
QA1145: Shows how to preserve the embedded ICC profile when using the QuickTime Graphics Importer/Exporter routines
Graphics & Imaging 2002-09-04
Process Carbon Events Not Delivered in 10.2 (HTML) ()
QA1181: Work around for a bug in Mac OS X 10.2 that prevents the delivery of process Carbon events.
Events & Other Input, Human Interface Toolbox, Process Management 2002-08-27
Signals and Threads (HTML) ()
QA1184: Describes how threads and signals interact.
Process Management 2002-08-27
Resource forks in Mach-O binaries (HTML) ()
QA1175: Advises against using resource forks in Mach-O binaries.
Human Interface Toolbox, Resource Management, Runtime Architecture 2002-08-07
Using Navigation Services to filter QuickTime files (HTML) ()
QA1152: Using the CanQuickTimeOpenFile function in a Navigation Services filter to display files that QuickTime can open.
Human Interface Toolbox 2002-07-15
My ListBox control works fine on Mac OS X but I get a crash on Mac OS 9 when I click in the scrollbar (HTML) ()
QA1156: Explains the requirements for the use of the Listbox Control on Mac OS 9 and Mac OS X.
Human Interface Toolbox 2002-07-12
Base-Derived async image codecs must implement ImageCodecQueueStarting and ImageCodecQueueStopping (HTML) ()
QA1157: Describes why base-derived codecs that set canAsync must implement ImageCodecQueueStarting and ImageCodecQueueStopping.
QuickTime 2002-07-09
How can I set the default location with the modern Navigation APIs NavCreatexxx? (HTML) ()
QA1151: Explains how to set the default location with a NavCustomControl call using the kNavCtlSetLocation message in the Event Proc.
File Management, Human Interface Toolbox 2002-07-01
Disabling a Processor on a Multiprocessor System (HTML) ()
QA1141: Describes how to disable a processor on a multiprocessor system for testing purposes.
Performance 2002-05-22
Retrieving Data from AEDesc Records - do not use the dataHandle field (HTML) ()
QA1139: Describes the correct way to access data stored in AEDesc records.
AppleScript, Interapplication Communication 2002-04-10
Determining user login/logout status (HTML)
QA1133: Tells how to determinine if a user is logged in, and how to get login/logout notification
Process Management, Resource Management, Runtime Architecture 2002-04-08
Calling an AppleScript and providing parameters from an Application (HTML) ()
QA1111: Explains calling and providing parameter values to an AppleScript event handler from an application written in C.
AppleScript 2002-03-13
Why isn't my Static Text Control deactivating when my other controls are? (HTML) ()
QA1125: Explains why a Static Text Control is not deactivating when the other controls are.
Human Interface Toolbox 2002-03-11
MPRemoteCall Contexts (HTML) ()
QA1122: Describes two recently introduced options for the context parameter of MPRemoteCall.
Process Management 2002-02-18